맨위로가기

데이터베이스 엔진

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

데이터베이스 엔진은 다양한 스토리지 엔진을 지원하며, 데이터 저장을 위한 핵심 요소이다. 최신 DBMS는 여러 스토리지 엔진을 지원하며, 각 엔진은 라이선스, 트랜잭션 지원 여부, 호환성 등의 특징을 갖는다. 데이터베이스 엔진은 스토리지 엔진, 데이터 구조, 데이터 방향 및 클러스터링, 데이터베이스 인덱싱 등의 설계 고려 사항을 통해 데이터베이스 성능을 향상시킨다.

더 읽어볼만한 페이지

  • 데이터베이스 엔진 - 파일메이커
    파일메이커는 데이터베이스 관리 및 공유를 위한 소프트웨어로, FileMaker Pro를 통해 커스텀 앱을 제작하고 FileMaker Server로 LAN 환경에서 데이터베이스를 공유 및 백업하며, FileMaker Go 앱과 FileMaker WebDirect를 통해 모바일 및 웹 브라우저에서 데이터베이스 솔루션을 활용하고 Claris Connect로 엔터프라이즈 앱과의 데이터 통합을 지원한다.
  • 데이터베이스 엔진 - MyISAM
    MyISAM은 MySQL 데이터베이스 시스템에서 사용되던 스토리지 엔진으로, 데이터 파일, 인덱스 파일, 테이블 정의 파일로 구성되어 읽기 작업에 최적화되었으나 트랜잭션과 외래 키를 지원하지 않아 데이터 무결성 유지가 어렵고, 현재는 InnoDB 엔진으로 대체되었지만 MariaDB에서는 개선 작업이 지속되고 있다.
  • 데이터베이스 관리 시스템 - 트랜잭션 처리
    트랜잭션 처리는 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위한 기술이며, ACID 속성을 통해 데이터 정확성을 유지하고 롤백, 데드락 처리 등의 기술을 활용한다.
  • 데이터베이스 관리 시스템 - 저장 프로시저
    저장 프로시저는 데이터베이스 관리 시스템에서 SQL 문들을 미리 컴파일하여 저장하고, 모듈화, 보안성, 성능 향상, 유지보수 용이성과 같은 특징을 가지며, 데이터베이스 시스템마다 구현 방식과 지원하는 언어가 다를 수 있는 코드 묶음이다.
데이터베이스 엔진
데이터베이스 엔진
개발
개발사다양한 업체 (아래 표 참조)
첫 출시1960년대 후반
최신 버전각 제품별로 상이 (아래 표 참조)
플랫폼
지원 운영체제윈도우
리눅스
macOS
유닉스
기타
라이선스
라이선스 종류상용
오픈 소스
혼합형
주요 기능
데이터 모델관계형 데이터베이스
객체 지향 데이터베이스
NoSQL
기타
쿼리 언어SQL
NoSQL 쿼리 언어
기타
트랜잭션 지원지원함
ACID 속성 준수준수함 (제품별로 상이)
동시성 제어지원함
백업 및 복구지원함
보안 기능지원함
데이터베이스 엔진 목록
관계형 데이터베이스 엔진
제품명MySQL
개발사오라클
최신 버전8.0 (2018년)
라이선스GPL (일부 상용)
제품명PostgreSQL
개발사PostgreSQL Global Development Group
최신 버전14 (2021년)
라이선스PostgreSQL 라이선스
제품명오라클
개발사오라클
최신 버전21c (2021년)
라이선스상용
제품명Microsoft SQL Server
개발사마이크로소프트
최신 버전SQL Server 2022
라이선스상용
제품명SQLite
개발사D. Richard Hipp
최신 버전3.37 (2021년)
라이선스퍼블릭 도메인
NoSQL 데이터베이스 엔진
제품명MongoDB
개발사MongoDB Inc.
최신 버전5.0 (2021년)
라이선스AGPL (일부 상용)
제품명카산드라
개발사아파치 소프트웨어 재단
최신 버전4.0 (2021년)
라이선스아파치 라이선스
제품명Redis
개발사Redis Labs
최신 버전6.2 (2021년)
라이선스BSD 라이선스 (일부 상용)
기타 데이터베이스 엔진
제품명Db2
개발사IBM
최신 버전11.5
라이선스상용
관련 기술
관련 기술데이터베이스
데이터베이스 관리 시스템 (DBMS)
SQL
NoSQL
데이터 모델링
트랜잭션 처리
데이터베이스 보안

2. 스토리지 엔진

최신 DBMS는 대부분 같은 데이터베이스 안에서 여러 스토리지 엔진을 지원한다. 예를 들어 MySQLInnoDBMyISAM을 지원한다. 스토리지 엔진은 트랜잭션을 지원하는 것과 지원하지 않는 것이 있다.

이름라이선스트랜잭션 처리 유무
AriaGPL아니요
FalconGPL
InnoDBGPL
MyISAMGPL아니요
InfiniDBGPL아니요
TokuDBGPL
WiredTigerGPL
XtraDBGPL
RocksDB / MyRocksGPL v2 또는 Apache 2.0



이 외에도 임베디드 데이터베이스 엔진, 인 메모리 데이터베이스 엔진 등이 있다.

2. 1. 주요 스토리지 엔진

최신 DBMS의 대부분은 동일한 데이터베이스 내에서 여러 스토리지 엔진을 지원한다. 예를 들어, MySQLInnoDBMyISAM을 지원한다.

일부 스토리지 엔진은 트랜잭션을 지원한다.

이름라이선스트랜잭션 지원호환성비고
AriaGPL아니요MariaDBMySQL
FalconGPLMySQL중단됨
InnoDBGPLMySQL 및 MariaDBMySQL 및 MariaDB의 기본값
MemoryGPL아니요MySQL 및 MariaDB
MyISAMGPL아니요MySQLMySQL의 기본값이었음
InfiniDBGPL아니요
TokuDBGPLMySQL 및 MariaDB프랙탈 트리 인덱스 사용
WiredTigerGPLMongoDBMongoDB의 기본값
XtraDBGPLMariaDB 및 Percona Server for MySQL
RocksDB / MyRocksGPL v2 또는 Apache 2.0ArangoDB, 카산드라, MariaDB, MongoDB, MySQL, SurrealDB



추가적인 엔진 유형은 다음과 같다.


  • 내장 데이터베이스 엔진
  • 인 메모리 데이터베이스 엔진

2. 2. 기타 스토리지 엔진 유형

최신 DBMS(데이터베이스 관리 시스템)의 대부분은 동일한 데이터베이스 내에서 여러 스토리지 엔진을 지원한다. 예를 들어, MySQLInnoDBMyISAM을 지원한다.

일부 스토리지 엔진은 트랜잭션을 지원한다.

이름라이선스트랜잭션 지원호환성비고
AriaGPL아니요MariaDBMySQL
FalconGPLMySQL중단됨
InnoDBGPLMySQL 및 MariaDBMySQL 및 MariaDB의 기본값
MemoryGPL아니요MySQL 및 MariaDB
MyISAMGPL아니요MySQLMySQL의 기본값이었음
InfiniDBGPL아니요
TokuDBGPLMySQL 및 MariaDB프랙탈 트리 인덱스 사용
WiredTigerGPLMongoDBMongoDB의 기본값
XtraDBGPLMariaDB 및 Percona Server for MySQL
RocksDB / MyRocksGPL v2 또는 Apache 2.0ArangoDB, 카산드라, MariaDB, MongoDB, MySQL, SurrealDB



추가적인 엔진 유형은 다음과 같다.


  • 임베디드 데이터베이스 엔진
  • 인 메모리 데이터베이스 엔진

3. 설계 고려 사항

데이터베이스의 정보는 저장 하드웨어에 자료 구조 형태로 비트 단위로 저장된다. 이러한 자료 구조는 저장 하드웨어에서 효율적인 읽기 및 쓰기를 위해 설계되었다. 일반적으로 저장 하드웨어 자체는 데이터베이스를 포함하여 저장소를 광범위하게 사용하는 다양한 시스템의 요구 사항을 충족하도록 설계되었다. 운영 DBMS는 플래시 메모리 및 외부 디스크 저장소와 같이 서로 다른 저장 유형을 동시에 사용하며, 이들은 각각 다른 데이터 레이아웃 방식을 필요로 한다.

원칙적으로 데이터베이스 저장소는 모든 데이터 비트가 고유한 주소를 갖는 선형 주소 공간으로 볼 수 있다. 실제로 주소의 아주 작은 비율만 초기 참조점으로 유지되며, 대부분의 데이터는 변위 계산(참조점에서 비트 단위의 거리)을 사용한 간접 참조와 필요한 데이터 접근 작업에 최적화된 데이터 구조(포인터 사용)를 통해 접근된다.

3. 1. 데이터베이스 저장소 계층

데이터베이스의 정보는 저장 하드웨어에 자료 구조 형태로 비트 단위로 저장된다. 이러한 자료 구조는 저장 하드웨어에서 효율적으로 읽고 쓰기 위해 설계되었다. 일반적으로 저장 하드웨어 자체는 데이터베이스를 포함하여 저장소를 광범위하게 사용하는 다양한 시스템의 요구 사항을 충족하도록 설계되었다. 운영 DBMS는 항상 플래시 메모리 및 외부 디스크 저장소와 같이 서로 다른 저장 유형을 동시에 사용하며, 이들은 각각 다른 데이터 레이아웃 방식을 필요로 한다.

원칙적으로 데이터베이스 저장소는 모든 데이터 비트가 고유한 주소를 갖는 선형 주소 공간으로 볼 수 있다. 실제로 주소의 아주 작은 비율만 초기 참조점으로 유지되며, 대부분의 데이터는 변위 계산(참조점에서 비트 단위의 거리)을 사용한 간접 참조와 필요한 데이터 액세스 작업에 최적화된 데이터 구조(포인터 사용)를 통해 접근된다.

데이터베이스는 작동하는 동안 여러 유형의 저장소에 동시에 존재하며, 이는 저장 계층 구조를 형성한다. DBMS를 호스팅하는 현대 컴퓨터 내부에서 "데이터베이스" 부분의 대부분은 부분적으로 복제된 상태로 휘발성 저장소에 존재한다. 활발하게 처리되고 조작되는 데이터는 프로세서 내부, 프로세서의 캐시에 존재할 수 있다. 이러한 데이터는 일반적으로 컴퓨터 버스를 통해 메모리에서 읽고 쓰여지며, 버스는 일반적으로 휘발성 저장소 구성 요소이다. 컴퓨터 메모리는 표준 저장 인터페이스 또는 네트워크(예: 파이버 채널, iSCSI)를 통해 외부 저장소와 데이터를 통신한다.

일반적인 외부 저장 장치인 저장소 배열은 일반적으로 자체적으로 저장 계층 구조를 갖는다. 일반적으로 휘발성 및 빠른 DRAM으로 구성된 빠른 캐시는 (표준 인터페이스를 통해) 드라이브에 연결된다. 이러한 드라이브는 플래시 드라이브비휘발성 자기 디스크 드라이브와 같이 서로 다른 속도를 가질 수 있다. 속도와 가격은 일반적으로 상관 관계가 있다. 드라이브는 대규모 데이터베이스의 가장 비활성적인 부분이 존재할 수 있는 자기 테이프에 연결될 수 있다.

3. 2. 데이터 구조

데이터 구조는 데이터를 잘 정의된 방식으로 포함하는 추상적인 구성 요소이다. 효율적인 데이터 구조는 데이터를 효율적인 방식으로 조작할 수 있게 해준다. 데이터 조작에는 다양한 모드에서의 데이터 삽입, 삭제, 업데이트 및 검색이 포함될 수 있다. 특정 데이터 구조 유형은 특정 작업에서 매우 효과적일 수 있지만 다른 작업에서는 매우 비효율적일 수 있다. 데이터 구조 유형은 포함된 데이터 유형에 필요한 작업을 가장 잘 충족하도록 DBMS 개발 시 선택된다. 특정 작업에 대해 선택된 데이터 구조 유형은 일반적으로 저장소가 위치한 유형(예: 접근 속도, 접근되는 최소 저장소 청크 크기 등)도 고려한다. 일부 DBMS에서는 데이터베이스 관리자가 성능상의 이유로 사용자 데이터를 포함할 데이터 구조 옵션 중에서 유연하게 선택할 수 있다. 경우에 따라 데이터 구조에는 데이터베이스 성능을 조정할 수 있는 선택 가능한 매개변수가 있다.[1]

데이터베이스는 많은 데이터 구조 유형으로 데이터를 저장할 수 있다.[2] 일반적인 예는 다음과 같다.

데이터베이스 내의 정보는 하드웨어의 속성을 지정하여 효율적으로 읽고 쓸 수 있는 스토리지 내의 자료 구조로 레이아웃된 비트로서 저장된다. 일반적으로 스토리지는 데이터베이스를 포함한 스토리지를 광범위하게 이용하는 다양한 영역의 요구 사항을 충족하도록 설계되어 있다. 작동 중인 DBMS는 각각의 레이아웃 방식으로, 항상 복수의 스토리지 종류(메모리, 외부 스토리지 등)를 동시에 이용한다.

원칙적으로, 데이터베이스 스토리지는 선형 주소 공간으로 간주할 수 있으며, 데이터의 모든 비트가 이 주소 공간에서 고유한 주소를 갖는다. 실제로는, 주소의 극히 일부만이 초기 참조 포인트로서 보존된다(이것에도 스토리지가 필요하다). 대부분의 데이터는 변위 계산(참조 포인트로부터의 비트 단위 거리)과, 필요한 데이터 접근 조작에 최적화된 효과적인 방법으로 모든 필요한 데이터에 대한 접근 경로(포인터 사용)를 정의하는 데이터 구조를 사용한 간접 참조를 통해 접근된다.

3. 3. 데이터 방향 및 클러스터링

관계형 데이터베이스는 데이터를 저장하는 방식에 있어서 전통적인 행 중심 방식과 대조적으로 컬럼 기반 또는 상관 방식을 사용할 수도 있다.

일반적으로, 함께 자주 사용되는 서로 다른 유형의 데이터베이스 객체를 "클러스터링"하여 인접하게 저장하면 성능을 크게 향상시킬 수 있다. 이렇게 하면 필요한 관련 객체를 최소한의 입력 작업(각 작업은 때때로 상당한 시간이 소요될 수 있음)으로 저장소에서 검색할 수 있다. 메모리 내 데이터베이스에서도 클러스터링은 메모리 내 입출력 작업에 대한 대규모 캐시를 일반적으로 활용하므로 유사한 결과를 보이며 성능상의 이점을 제공한다.

예를 들어, 재고에 있는 "항목" 레코드를 해당 "주문" 레코드와 모두 클러스터링하는 것이 유용할 수 있다. 특정 객체를 클러스터링할지 여부에 대한 결정은 객체의 활용 통계, 객체 크기, 캐시 크기, 저장소 유형 등에 따라 달라진다.[1]

3. 4. 데이터베이스 인덱싱

인덱싱은 일부 스토리지 엔진이 데이터베이스 성능을 향상시키기 위해 사용하는 기술이다. 다양한 유형의 인덱스는 쿼리를 실행할 때 모든 항목을 검사할 필요성을 줄인다는 공통적인 특징을 공유한다. 대규모 데이터베이스에서 이는 쿼리 시간/비용을 수십 배 줄일 수 있다. 가장 간단한 형태의 인덱스는 항목의 위치에 대한 인접 참조와 함께 이진 검색을 사용하여 검색할 수 있는 정렬된 값 목록이며, 책의 색인과 유사하다. 동일한 데이터에 여러 인덱스(직원 데이터베이스는 성과 입사일로 인덱싱될 수 있음)가 있을 수 있다.

인덱스는 성능에 영향을 미치지만 결과에는 영향을 미치지 않는다. 데이터베이스 설계자는 애플리케이션 로직을 변경하지 않고 인덱스를 추가하거나 제거할 수 있어 데이터베이스가 성장하고 데이터베이스 사용이 발전함에 따라 유지 관리 비용을 줄일 수 있다. 인덱스는 데이터 접근을 가속화할 수 있지만 데이터베이스에서 공간을 소비하며 데이터가 변경될 때마다 업데이트해야 한다. 따라서 인덱스는 데이터 접근을 빠르게 할 수 있지만, 데이터의 유지는 느려진다. 이 두 가지 속성이 주어진 인덱스가 비용 대비 가치가 있는지 여부를 결정한다.

참조

[1] 서적 Physical Database Design: the database professional's guide to exploiting indexes, views, storage, and more Morgan Kaufmann Press
[2] 서적 Physical Database Design: the database professional's guide to exploiting indexes, views, storage, and more Morgan Kaufmann Press



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com